\hypertarget{class_mecanum_drive_subsystem}{\section{Mecanum\-Drive\-Subsystem Class Reference}
\label{class_mecanum_drive_subsystem}\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
}


{\ttfamily \#include $<$Mecanum\-Drive\-Subsystem.\-hpp$>$}

Inheritance diagram for Mecanum\-Drive\-Subsystem\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=5.000000cm]{class_mecanum_drive_subsystem}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{class_mecanum_drive_subsystem_1_1_dead_zone_modifier}{Dead\-Zone\-Modifier}
\item 
class \hyperlink{class_mecanum_drive_subsystem_1_1_drive_distance}{Drive\-Distance}
\item 
class \hyperlink{class_mecanum_drive_subsystem_1_1_drive_start_state}{Drive\-Start\-State}
\item 
class \hyperlink{class_mecanum_drive_subsystem_1_1_drive_state}{Drive\-State}
\item 
class \hyperlink{class_mecanum_drive_subsystem_1_1_scale_modifier}{Scale\-Modifier}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum {\bfseries Drive\-Mode} \{ {\bfseries Drive\-Mode\-None} = 0, 
{\bfseries Drive\-Mode\-Cartesian} = 1, 
{\bfseries Drive\-Mode\-Polar} = 2
 \}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_mecanum_drive_subsystem_ae50a6dbdaac75006deeedf63e059be4d}{Mecanum\-Drive\-Subsystem} (U\-I\-N\-T32 left\-Front\-Motor\-Channel, U\-I\-N\-T32 left\-Back\-Motor\-Channel, U\-I\-N\-T32 right\-Front\-Motor\-Channel, U\-I\-N\-T32 right\-Back\-Motor\-Channel)
\item 
\hyperlink{class_mecanum_drive_subsystem_a3048f62cfb10e2372719efd2d60a3d54}{Mecanum\-Drive\-Subsystem} (U\-I\-N\-T32 left\-Front\-Motor\-Channel, U\-I\-N\-T32 left\-Back\-Motor\-Channel, U\-I\-N\-T32 right\-Front\-Motor\-Channel, U\-I\-N\-T32 right\-Back\-Motor\-Channel, Gyro $\ast$gyro)
\item 
\hyperlink{class_mecanum_drive_subsystem_aded0630ec496bc87ab26db5f3d3a9e78}{Mecanum\-Drive\-Subsystem} (U\-I\-N\-T32 left\-Front\-Motor\-Channel, U\-I\-N\-T32 left\-Back\-Motor\-Channel, U\-I\-N\-T32 right\-Front\-Motor\-Channel, U\-I\-N\-T32 right\-Back\-Motor\-Channel, Gyro \&gyro)
\item 
\hypertarget{class_mecanum_drive_subsystem_a4ea41a7b297165837f59b9073b3bc49a}{{\bfseries Mecanum\-Drive\-Subsystem} (boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ left\-Front\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ left\-Back\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ right\-Front\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ right\-Back\-Motor)}\label{class_mecanum_drive_subsystem_a4ea41a7b297165837f59b9073b3bc49a}

\item 
\hypertarget{class_mecanum_drive_subsystem_a0b17f6e67fb67168ba4d2386682ed491}{{\bfseries Mecanum\-Drive\-Subsystem} (boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ left\-Front\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ left\-Back\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ right\-Front\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ right\-Back\-Motor, Gyro $\ast$gyro)}\label{class_mecanum_drive_subsystem_a0b17f6e67fb67168ba4d2386682ed491}

\item 
\hypertarget{class_mecanum_drive_subsystem_a579bbc9ba19be1e067834f94112354e0}{{\bfseries Mecanum\-Drive\-Subsystem} (boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ left\-Front\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ left\-Back\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ right\-Front\-Motor, boost\-::shared\-\_\-ptr$<$ \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $>$ right\-Back\-Motor, Gyro \&gyro)}\label{class_mecanum_drive_subsystem_a579bbc9ba19be1e067834f94112354e0}

\item 
\hyperlink{class_mecanum_drive_subsystem_a4ec203860426e7431a0e5df7e4594ae3}{Mecanum\-Drive\-Subsystem} (\hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $\ast$left\-Front\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $\ast$left\-Back\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $\ast$right\-Front\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $\ast$right\-Back\-Motor, bool can\-Delete\-Motors=false)
\item 
\hyperlink{class_mecanum_drive_subsystem_a3cd9a575b1c74419803f426038d33f7a}{Mecanum\-Drive\-Subsystem} (\hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $\ast$left\-Front\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $\ast$left\-Back\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $\ast$right\-Front\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} $\ast$right\-Back\-Motor, Gyro $\ast$gyro, bool can\-Delete\-Motors=false)
\item 
\hyperlink{class_mecanum_drive_subsystem_a5e79bd91c25264f93c6723138067d239}{Mecanum\-Drive\-Subsystem} (\hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} \&left\-Front\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} \&left\-Back\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} \&right\-Front\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} \&right\-Back\-Motor)
\item 
\hyperlink{class_mecanum_drive_subsystem_a8cd6a486098a4d67b2cc843702338b56}{Mecanum\-Drive\-Subsystem} (\hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} \&left\-Front\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} \&left\-Back\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} \&right\-Front\-Motor, \hyperlink{class_pid_motor_controller}{Pid\-Motor\-Controller} \&right\-Back\-Motor, Gyro \&gyro)
\item 
\hyperlink{class_mecanum_drive_subsystem_a404a6d6a2ad87a8f602ff55e8c92d013}{Mecanum\-Drive\-Subsystem} (C\-A\-N\-Jaguar $\ast$left\-Front\-Motor, C\-A\-N\-Jaguar $\ast$left\-Back\-Motor, C\-A\-N\-Jaguar $\ast$right\-Front\-Motor, C\-A\-N\-Jaguar $\ast$right\-Back\-Motor, bool can\-Delete\-Motors=false)
\item 
\hyperlink{class_mecanum_drive_subsystem_a748f23001798ab800539d2a1a711bb8b}{Mecanum\-Drive\-Subsystem} (C\-A\-N\-Jaguar $\ast$left\-Front\-Motor, C\-A\-N\-Jaguar $\ast$left\-Back\-Motor, C\-A\-N\-Jaguar $\ast$right\-Front\-Motor, C\-A\-N\-Jaguar $\ast$right\-Back\-Motor, Gyro $\ast$gyro, bool can\-Delete\-Motors=false)
\item 
\hyperlink{class_mecanum_drive_subsystem_a043a49058ab2a8be3dd07e58f269d44e}{Mecanum\-Drive\-Subsystem} (C\-A\-N\-Jaguar \&left\-Front\-Motor, C\-A\-N\-Jaguar \&left\-Back\-Motor, C\-A\-N\-Jaguar \&right\-Front\-Motor, C\-A\-N\-Jaguar \&right\-Back\-Motor)
\item 
\hypertarget{class_mecanum_drive_subsystem_a4b843a0486beed3406d0e5e9e6da3835}{{\bfseries Mecanum\-Drive\-Subsystem} (C\-A\-N\-Jaguar \&left\-Front\-Motor, C\-A\-N\-Jaguar \&left\-Back\-Motor, C\-A\-N\-Jaguar \&right\-Front\-Motor, C\-A\-N\-Jaguar \&right\-Back\-Motor, Gyro \&gyro)}\label{class_mecanum_drive_subsystem_a4b843a0486beed3406d0e5e9e6da3835}

\item 
\hyperlink{class_mecanum_drive_subsystem_a8c3c37950c9e122d7e5bd5249532aa08}{Mecanum\-Drive\-Subsystem} (Speed\-Controller $\ast$left\-Front\-Motor, Speed\-Controller $\ast$left\-Back\-Motor, Speed\-Controller $\ast$right\-Front\-Motor, Speed\-Controller $\ast$right\-Back\-Motor)
\item 
\hyperlink{class_mecanum_drive_subsystem_ae99627eedf77db23e7a97addf3a7ec1a}{Mecanum\-Drive\-Subsystem} (Speed\-Controller $\ast$left\-Front\-Motor, Speed\-Controller $\ast$left\-Back\-Motor, Speed\-Controller $\ast$right\-Front\-Motor, Speed\-Controller $\ast$right\-Back\-Motor, Gyro $\ast$gyro)
\item 
\hyperlink{class_mecanum_drive_subsystem_a55602773090af3988d24419b00fe3c74}{Mecanum\-Drive\-Subsystem} (Speed\-Controller \&left\-Front\-Motor, Speed\-Controller \&left\-Back\-Motor, Speed\-Controller \&right\-Front\-Motor, Speed\-Controller \&right\-Back\-Motor)
\item 
\hyperlink{class_mecanum_drive_subsystem_ab3a22278b63c9fec0146dbec744a2acc}{Mecanum\-Drive\-Subsystem} (Speed\-Controller \&left\-Front\-Motor, Speed\-Controller \&left\-Back\-Motor, Speed\-Controller \&right\-Front\-Motor, Speed\-Controller \&right\-Back\-Motor, Gyro \&gyro)
\item 
virtual \hyperlink{class_mecanum_drive_subsystem_ad81cb42051774595e745081eeac475cf}{$\sim$\-Mecanum\-Drive\-Subsystem} ()
\item 
void \hyperlink{class_mecanum_drive_subsystem_abc196f844ef6906272052ee7b31fb43d}{Drive\-By\-Cartesian} (double x, double y, double rotation)
\item 
void \hyperlink{class_mecanum_drive_subsystem_a38c34a6ec95d28835e556b555d4528e8}{Drive\-By\-Polar} (double magnitude, double direction, double rotation)
\item 
boost\-::shared\-\_\-ptr$<$ \hyperlink{class_operation}{Operation}\\*
$<$ bool $>$ $>$ \hyperlink{class_mecanum_drive_subsystem_acdf1b8df92fbe6ff89bf3bac36bc5d56}{Drive\-Distance\-By\-Cartesian} (double x, double y, double rotation)
\item 
\hypertarget{class_mecanum_drive_subsystem_a2fb7f0832491420adb4cfb5dd07a0bd7}{boost\-::shared\-\_\-ptr$<$ \hyperlink{class_operation}{Operation}\\*
$<$ bool $>$ $>$ {\bfseries Drive\-Distance\-By\-Cartesian} (double x, double y, double rotation, double threshold)}\label{class_mecanum_drive_subsystem_a2fb7f0832491420adb4cfb5dd07a0bd7}

\item 
\hypertarget{class_mecanum_drive_subsystem_ac3b2d146cb401fedc45df215aa6c072f}{boost\-::shared\-\_\-ptr$<$ \hyperlink{class_operation}{Operation}\\*
$<$ bool $>$ $>$ {\bfseries Drive\-Distance\-By\-Cartesian} (const \hyperlink{struct_cartesian_value}{Cartesian\-Value} \&value, double threshold)}\label{class_mecanum_drive_subsystem_ac3b2d146cb401fedc45df215aa6c072f}

\item 
boost\-::shared\-\_\-ptr$<$ \hyperlink{class_operation}{Operation}\\*
$<$ bool $>$ $>$ \hyperlink{class_mecanum_drive_subsystem_a90f47ea5575b5f45f88ce0a2dbaf7ad6}{Drive\-Distance\-By\-Polar} (double magnitude, double direction, double rotation)
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{class_mecanum_drive_subsystem_aab30d5463d2d0c0ce4986c13ba3a4ca5}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Tank\-Drive\-With\-Passive\-Mecanum\-Value\-Fetcher} (Generic\-H\-I\-D \&left\-Joystick, Generic\-H\-I\-D \&right\-Joystick)}\label{class_mecanum_drive_subsystem_aab30d5463d2d0c0ce4986c13ba3a4ca5}

\item 
\hypertarget{class_mecanum_drive_subsystem_aa906376eaa76cefb7c0622b58068f6aa}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Tank\-Drive\-With\-Active\-Mecanum\-Value\-Fetcher} (Generic\-H\-I\-D \&left\-Joystick, Generic\-H\-I\-D \&right\-Joystick)}\label{class_mecanum_drive_subsystem_aa906376eaa76cefb7c0622b58068f6aa}

\item 
\hypertarget{class_mecanum_drive_subsystem_a7ef19964788f7518eb777e48ebe35b8a}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Arcade\-Drive\-Normal\-Style\-With\-Mecanum\-Value\-Fetcher} (Generic\-H\-I\-D \&left\-Joystick, Generic\-H\-I\-D \&right\-Joystick)}\label{class_mecanum_drive_subsystem_a7ef19964788f7518eb777e48ebe35b8a}

\item 
\hypertarget{class_mecanum_drive_subsystem_ada6a066131f2e2f942f6e1bb46488e2e}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Arcade\-Drive\-Modern\-Style\-With\-Mecanum\-Value\-Fetcher} (Generic\-H\-I\-D \&left\-Joystick, Generic\-H\-I\-D \&right\-Joystick)}\label{class_mecanum_drive_subsystem_ada6a066131f2e2f942f6e1bb46488e2e}

\item 
\hypertarget{class_mecanum_drive_subsystem_a15c4c13ff6409bde3d1be6b59dcb4457}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Arcade\-Drive\-Modern\-Style\-With\-Mecanum\-Value\-Fetcher} (\hyperlink{class_xbox_joystick}{Xbox\-Joystick} \&joystick)}\label{class_mecanum_drive_subsystem_a15c4c13ff6409bde3d1be6b59dcb4457}

\item 
\hypertarget{class_mecanum_drive_subsystem_a78d6cb1a1ce4feb3d86120d6525366a0}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Arcade\-Drive\-Normal\-Style\-With\-Mecanum\-Value\-Fetcher} (\hyperlink{class_xbox_joystick}{Xbox\-Joystick} \&joystick)}\label{class_mecanum_drive_subsystem_a78d6cb1a1ce4feb3d86120d6525366a0}

\item 
\hypertarget{class_mecanum_drive_subsystem_a291ba1c7393020ce75603798c5a36e24}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Tank\-Drive\-With\-Passive\-Mecanum\-Value\-Fetcher} (\hyperlink{class_xbox_joystick}{Xbox\-Joystick} \&joystick)}\label{class_mecanum_drive_subsystem_a291ba1c7393020ce75603798c5a36e24}

\item 
\hypertarget{class_mecanum_drive_subsystem_aa401a72a9b82f9702eef8a1334fda88d}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Tank\-Drive\-With\-Passive\-Mecanum\-Value\-Fetcher} (\hyperlink{class_ps3_joystick}{Ps3\-Joystick} \&joystick)}\label{class_mecanum_drive_subsystem_aa401a72a9b82f9702eef8a1334fda88d}

\item 
\hypertarget{class_mecanum_drive_subsystem_aac8b9e84fd269c03928bcef7c7f9ba7d}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Arcade\-Drive\-Modern\-Style\-With\-Mecanum\-Value\-Fetcher} (\hyperlink{class_ps3_joystick}{Ps3\-Joystick} \&joystick)}\label{class_mecanum_drive_subsystem_aac8b9e84fd269c03928bcef7c7f9ba7d}

\item 
\hypertarget{class_mecanum_drive_subsystem_aa7dc86bb469f19fd3b818746755e9d78}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Arcade\-Drive\-Normal\-Style\-With\-Mecanum\-Value\-Fetcher} (\hyperlink{class_ps3_joystick}{Ps3\-Joystick} \&joystick)}\label{class_mecanum_drive_subsystem_aa7dc86bb469f19fd3b818746755e9d78}

\item 
\hypertarget{class_mecanum_drive_subsystem_a39e93e6ea624b04e639986915c326d76}{static \hyperlink{struct_cartesian_value}{Cartesian\-Value} {\bfseries Tilt\-Drive\-Style\-With\-Mecanum\-Value\-Fetcher} (\hyperlink{class_ps3_joystick}{Ps3\-Joystick} \&joystick)}\label{class_mecanum_drive_subsystem_a39e93e6ea624b04e639986915c326d76}

\item 
\hypertarget{class_mecanum_drive_subsystem_add9524e3d90507cb3a6c4aa07d54f0ba}{static void {\bfseries Drive\-By\-Cartesian} (\hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem} \&drive, const \hyperlink{struct_cartesian_value}{Cartesian\-Value} \&value)}\label{class_mecanum_drive_subsystem_add9524e3d90507cb3a6c4aa07d54f0ba}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{class_mecanum_drive_subsystem_adf2c3d907fc8271f70dee8eb3be2576f}{Handle\-Periodic} ()
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
The \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem} class is a class for drive subsystems that use mecanum wheels. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{class_mecanum_drive_subsystem_ae50a6dbdaac75006deeedf63e059be4d}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{U\-I\-N\-T32}]{left\-Front\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{left\-Back\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{right\-Front\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{right\-Back\-Motor\-Channel}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_ae50a6dbdaac75006deeedf63e059be4d}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a3048f62cfb10e2372719efd2d60a3d54}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{U\-I\-N\-T32}]{left\-Front\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{left\-Back\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{right\-Front\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{right\-Back\-Motor\-Channel, }
\item[{Gyro $\ast$}]{gyro}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a3048f62cfb10e2372719efd2d60a3d54}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_aded0630ec496bc87ab26db5f3d3a9e78}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{U\-I\-N\-T32}]{left\-Front\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{left\-Back\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{right\-Front\-Motor\-Channel, }
\item[{U\-I\-N\-T32}]{right\-Back\-Motor\-Channel, }
\item[{Gyro \&}]{gyro}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_aded0630ec496bc87ab26db5f3d3a9e78}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a4ec203860426e7431a0e5df7e4594ae3}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{{\bf Pid\-Motor\-Controller} $\ast$}]{left\-Front\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} $\ast$}]{left\-Back\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} $\ast$}]{right\-Front\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} $\ast$}]{right\-Back\-Motor, }
\item[{bool}]{can\-Delete\-Motors = {\ttfamily false}}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a4ec203860426e7431a0e5df7e4594ae3}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a3cd9a575b1c74419803f426038d33f7a}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{{\bf Pid\-Motor\-Controller} $\ast$}]{left\-Front\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} $\ast$}]{left\-Back\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} $\ast$}]{right\-Front\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} $\ast$}]{right\-Back\-Motor, }
\item[{Gyro $\ast$}]{gyro, }
\item[{bool}]{can\-Delete\-Motors = {\ttfamily false}}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a3cd9a575b1c74419803f426038d33f7a}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a5e79bd91c25264f93c6723138067d239}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{{\bf Pid\-Motor\-Controller} \&}]{left\-Front\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} \&}]{left\-Back\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} \&}]{right\-Front\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} \&}]{right\-Back\-Motor}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a5e79bd91c25264f93c6723138067d239}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a8cd6a486098a4d67b2cc843702338b56}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{{\bf Pid\-Motor\-Controller} \&}]{left\-Front\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} \&}]{left\-Back\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} \&}]{right\-Front\-Motor, }
\item[{{\bf Pid\-Motor\-Controller} \&}]{right\-Back\-Motor, }
\item[{Gyro \&}]{gyro}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a8cd6a486098a4d67b2cc843702338b56}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a404a6d6a2ad87a8f602ff55e8c92d013}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{C\-A\-N\-Jaguar $\ast$}]{left\-Front\-Motor, }
\item[{C\-A\-N\-Jaguar $\ast$}]{left\-Back\-Motor, }
\item[{C\-A\-N\-Jaguar $\ast$}]{right\-Front\-Motor, }
\item[{C\-A\-N\-Jaguar $\ast$}]{right\-Back\-Motor, }
\item[{bool}]{can\-Delete\-Motors = {\ttfamily false}}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a404a6d6a2ad87a8f602ff55e8c92d013}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a748f23001798ab800539d2a1a711bb8b}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{C\-A\-N\-Jaguar $\ast$}]{left\-Front\-Motor, }
\item[{C\-A\-N\-Jaguar $\ast$}]{left\-Back\-Motor, }
\item[{C\-A\-N\-Jaguar $\ast$}]{right\-Front\-Motor, }
\item[{C\-A\-N\-Jaguar $\ast$}]{right\-Back\-Motor, }
\item[{Gyro $\ast$}]{gyro, }
\item[{bool}]{can\-Delete\-Motors = {\ttfamily false}}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a748f23001798ab800539d2a1a711bb8b}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a043a49058ab2a8be3dd07e58f269d44e}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{C\-A\-N\-Jaguar \&}]{left\-Front\-Motor, }
\item[{C\-A\-N\-Jaguar \&}]{left\-Back\-Motor, }
\item[{C\-A\-N\-Jaguar \&}]{right\-Front\-Motor, }
\item[{C\-A\-N\-Jaguar \&}]{right\-Back\-Motor}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a043a49058ab2a8be3dd07e58f269d44e}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a8c3c37950c9e122d7e5bd5249532aa08}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{Speed\-Controller $\ast$}]{left\-Front\-Motor, }
\item[{Speed\-Controller $\ast$}]{left\-Back\-Motor, }
\item[{Speed\-Controller $\ast$}]{right\-Front\-Motor, }
\item[{Speed\-Controller $\ast$}]{right\-Back\-Motor}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a8c3c37950c9e122d7e5bd5249532aa08}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_ae99627eedf77db23e7a97addf3a7ec1a}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{Speed\-Controller $\ast$}]{left\-Front\-Motor, }
\item[{Speed\-Controller $\ast$}]{left\-Back\-Motor, }
\item[{Speed\-Controller $\ast$}]{right\-Front\-Motor, }
\item[{Speed\-Controller $\ast$}]{right\-Back\-Motor, }
\item[{Gyro $\ast$}]{gyro}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_ae99627eedf77db23e7a97addf3a7ec1a}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_a55602773090af3988d24419b00fe3c74}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{Speed\-Controller \&}]{left\-Front\-Motor, }
\item[{Speed\-Controller \&}]{left\-Back\-Motor, }
\item[{Speed\-Controller \&}]{right\-Front\-Motor, }
\item[{Speed\-Controller \&}]{right\-Back\-Motor}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a55602773090af3988d24419b00fe3c74}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_ab3a22278b63c9fec0146dbec744a2acc}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}}
\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
\item[{Speed\-Controller \&}]{left\-Front\-Motor, }
\item[{Speed\-Controller \&}]{left\-Back\-Motor, }
\item[{Speed\-Controller \&}]{right\-Front\-Motor, }
\item[{Speed\-Controller \&}]{right\-Back\-Motor, }
\item[{Gyro \&}]{gyro}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_ab3a22278b63c9fec0146dbec744a2acc}
Constructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. \hypertarget{class_mecanum_drive_subsystem_ad81cb42051774595e745081eeac475cf}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!$\sim$\-Mecanum\-Drive\-Subsystem@{$\sim$\-Mecanum\-Drive\-Subsystem}}
\index{$\sim$\-Mecanum\-Drive\-Subsystem@{$\sim$\-Mecanum\-Drive\-Subsystem}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{$\sim$\-Mecanum\-Drive\-Subsystem}]{\setlength{\rightskip}{0pt plus 5cm}Mecanum\-Drive\-Subsystem\-::$\sim$\-Mecanum\-Drive\-Subsystem (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{class_mecanum_drive_subsystem_ad81cb42051774595e745081eeac475cf}
Destructor for \hyperlink{class_mecanum_drive_subsystem}{Mecanum\-Drive\-Subsystem}. 

\subsection{Member Function Documentation}
\hypertarget{class_mecanum_drive_subsystem_abc196f844ef6906272052ee7b31fb43d}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Drive\-By\-Cartesian@{Drive\-By\-Cartesian}}
\index{Drive\-By\-Cartesian@{Drive\-By\-Cartesian}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Drive\-By\-Cartesian}]{\setlength{\rightskip}{0pt plus 5cm}void Mecanum\-Drive\-Subsystem\-::\-Drive\-By\-Cartesian (
\begin{DoxyParamCaption}
\item[{double}]{x, }
\item[{double}]{y, }
\item[{double}]{rotation}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_abc196f844ef6906272052ee7b31fb43d}
Drive the specified amount on a cartesian plane.

Testing shows this function works.


\begin{DoxyParams}{Parameters}
{\em x} & The amount to drive on the x-\/axis.  y The amount to drive on the y-\/axis.  rotation The amount to rotate. \\
\hline
\end{DoxyParams}
\hypertarget{class_mecanum_drive_subsystem_a38c34a6ec95d28835e556b555d4528e8}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Drive\-By\-Polar@{Drive\-By\-Polar}}
\index{Drive\-By\-Polar@{Drive\-By\-Polar}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Drive\-By\-Polar}]{\setlength{\rightskip}{0pt plus 5cm}void Mecanum\-Drive\-Subsystem\-::\-Drive\-By\-Polar (
\begin{DoxyParamCaption}
\item[{double}]{magnitude, }
\item[{double}]{direction, }
\item[{double}]{rotation}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a38c34a6ec95d28835e556b555d4528e8}
Drive the specified amount using polar coordinates.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em magnitude} & The magnitude to drive.  direction The direction to drive.  rotation The amount to rotate. \\
\hline
\end{DoxyParams}
\hypertarget{class_mecanum_drive_subsystem_acdf1b8df92fbe6ff89bf3bac36bc5d56}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Drive\-Distance\-By\-Cartesian@{Drive\-Distance\-By\-Cartesian}}
\index{Drive\-Distance\-By\-Cartesian@{Drive\-Distance\-By\-Cartesian}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Drive\-Distance\-By\-Cartesian}]{\setlength{\rightskip}{0pt plus 5cm}shared\-\_\-ptr$<$ {\bf Operation}$<$ bool $>$ $>$ Mecanum\-Drive\-Subsystem\-::\-Drive\-Distance\-By\-Cartesian (
\begin{DoxyParamCaption}
\item[{double}]{x, }
\item[{double}]{y, }
\item[{double}]{rotation}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_acdf1b8df92fbe6ff89bf3bac36bc5d56}
Drive a distance specified by values in cartesian form.

Currently only works if C\-A\-N\-Jaguars are used. If C\-A\-N\-Jaguars aren't being used, an exception will be thrown.

This function doesn't seem to work.


\begin{DoxyParams}{Parameters}
{\em x} & Distance to move on the X axis reletive to the robot. \\
\hline
{\em y} & Distance to move on the Y axis reletive to the robot. \\
\hline
{\em rotation} & Amount to rotate.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A shared pointer to an ayncronous result of type bool. 
\end{DoxyReturn}
\hypertarget{class_mecanum_drive_subsystem_a90f47ea5575b5f45f88ce0a2dbaf7ad6}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Drive\-Distance\-By\-Polar@{Drive\-Distance\-By\-Polar}}
\index{Drive\-Distance\-By\-Polar@{Drive\-Distance\-By\-Polar}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Drive\-Distance\-By\-Polar}]{\setlength{\rightskip}{0pt plus 5cm}shared\-\_\-ptr$<$ {\bf Operation}$<$ bool $>$ $>$ Mecanum\-Drive\-Subsystem\-::\-Drive\-Distance\-By\-Polar (
\begin{DoxyParamCaption}
\item[{double}]{magnitude, }
\item[{double}]{direction, }
\item[{double}]{rotation}
\end{DoxyParamCaption}
)}}\label{class_mecanum_drive_subsystem_a90f47ea5575b5f45f88ce0a2dbaf7ad6}
Drive a distance specified by values in polar form.

Currently only works if C\-A\-N\-Jaguars are used. If C\-A\-N\-Jaguars aren't being used, an exception will be thrown.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em magnitude} & The magnitude to move. \\
\hline
{\em direction} & The direction to move. \\
\hline
{\em rotation} & The amount to rotate.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A shared pointer to an ayncronous result of type bool. 
\end{DoxyReturn}
\hypertarget{class_mecanum_drive_subsystem_adf2c3d907fc8271f70dee8eb3be2576f}{\index{Mecanum\-Drive\-Subsystem@{Mecanum\-Drive\-Subsystem}!Handle\-Periodic@{Handle\-Periodic}}
\index{Handle\-Periodic@{Handle\-Periodic}!MecanumDriveSubsystem@{Mecanum\-Drive\-Subsystem}}
\subsubsection[{Handle\-Periodic}]{\setlength{\rightskip}{0pt plus 5cm}void Mecanum\-Drive\-Subsystem\-::\-Handle\-Periodic (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{class_mecanum_drive_subsystem_adf2c3d907fc8271f70dee8eb3be2576f}
This function should be overridden to handle periodic subsystem tasks. It will be called periodically when subsystem is added to robot. 

Reimplemented from \hyperlink{class_tank_drive_subsystem_ab834b550c5bc2aa5ea164201287a3ebf}{Tank\-Drive\-Subsystem}.



The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize}
\item 
C\-:/\-Users/\-Sam/\-Projects/\-F\-R\-C/\-Libraries/\-Fpk/\-Entech-\/\-Fpk-\/\-Subscribers/\-Entech-\/\-Fpk/\-Subsystems/Mecanum\-Drive\-Subsystem.\-hpp\item 
C\-:/\-Users/\-Sam/\-Projects/\-F\-R\-C/\-Libraries/\-Fpk/\-Entech-\/\-Fpk-\/\-Subscribers/\-Entech-\/\-Fpk/\-Subsystems/Mecanum\-Drive\-Subsystem.\-cpp\end{DoxyCompactItemize}
